package open.intellijboy.framework.core.exception;

import open.intellijboy.framework.core.response.StatusCode;

/**
 * 系统异常类 - 处理不可预期的系统级异常
 *
 * @author System
 * @version 1.0.0
 * @since 2024-01-01
 */
public class SystemException extends BaseException {

    /**
     * 构造函数
     *
     * @param errorCode    错误码
     * @param errorMessage 错误消息
     */
    public SystemException(String errorCode, String errorMessage) {
        super(errorCode, errorMessage);
    }

    /**
     * 构造函数
     *
     * @param errorCode    错误码
     * @param errorMessage 错误消息
     * @param cause        原因异常
     */
    public SystemException(String errorCode, String errorMessage, Throwable cause) {
        super(errorCode, errorMessage, cause);
    }

    /**
     * 创建系统异常
     *
     * @param errorMessage 错误消息
     * @return SystemException
     */
    public static SystemException of(String errorMessage) {
        return new SystemException(StatusCode.SYSTEM_ERROR_B0001.getCode(), errorMessage);
    }

    /**
     * 创建系统异常
     *
     * @param errorCode    错误码
     * @param errorMessage 错误消息
     * @return SystemException
     */
    public static SystemException of(String errorCode, String errorMessage) {
        return new SystemException(errorCode, errorMessage);
    }

    /**
     * 包装异常
     *
     * @param errorMessage 错误消息
     * @param cause        原因异常
     * @return SystemException
     */
    public static SystemException wrap(String errorMessage, Throwable cause) {
        return new SystemException(StatusCode.SYSTEM_ERROR_B0001.getCode(), errorMessage, cause);
    }
}

